#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//int main()
//{
//	int b = 1;
//	int a = 1 % 3;
//	printf("%d", a);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	int b = 0;
//	for (i = 1; i <=9; i++)
//	{
//		for (b = 1; b <= i; b++)
//		{
//			
//			printf("%d * %d =%2d", i, b, i*b);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i;
//	for (i = 0; i < 10; i++)
//	{
//		scanf_s("%d",&arr[i]);
//	}
//	int max = arr[0];
//
//	for (i = 0; i < 10; i++)
//	{
//		
//		if (max < arr[i])
//		{
//			max = arr[i];
//		}
//	}
//	printf("%d", max);
//	return 0;
//}
//int main()
//{
//	int a=0;
//	double sum=0.0;
//	int flag = 1;
//
//	for (a = 1; a < 101; a++)
//	{
//		sum += flag*(1.0/a);
//		flag = flag * (-1);
//	}
//	printf("%f", sum);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	int flag = 0;
//	for (i = 1; i < 101; i++)
//	{
//		if (i % 10 == 9)
//		{
//			flag++;
//		}
//		if (i / 10 == 9)
//		{
//			flag++;
//		}
//	}
//	printf("%d", flag);
//	return 0;
//}
#include <math.h>

//int main()
//{
//    int i, j;
//    for (i = 100; i <= 200; i++)
//    {
//        int flag = 1;
//        for (j = 2; j <= sqrt(i); j++)
//        {
//            if (i % j == 0)
//            {
//                flag = 0;
//                break;
//            }
//        }
//        if (flag == 1)
//        {
//            printf("%d ", i);
//        }
//    }
//    return 0;
//}
//int main()
//{
//	int i = 0;
//	for (i = 1000; i <= 2000; i++)
//	{
//		if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0))
//			printf("%d\n", i);
//	}
//	return 0;
//
//}


int gcd(int a, int b) 
{
    while (b != 0)
    {
        int temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}

int main() 
{
    int num1 = 0, num2 = 0;
    scanf("%d %d", &num1, &num2);
    int result = gcd(num1, num2);
    printf("%d\n", result);
    return 0;
}
